package com.youbo.common.utils;

import com.google.common.collect.Lists;
import org.apache.commons.lang3.StringUtils;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

/**
 * 一句话注释
 *
 * @author Administrator
 * @date 2022/6/21
 */
public class CommonUtils {

    /**
     * 默认分隔正则
     */
    private static final String DEFAULT_SPLIT_REGEX = ",， \t\n\r";

    /**
     * 分隔字符列表
     *
     * @param text
     * @return
     */
    public static List<String> splitStringList(String text)
    {
        return splitStringList(text, DEFAULT_SPLIT_REGEX);
    }
    
    /**
     * 分隔字符列表
     *
     * @param text
     * @param regex
     * @return
     */
    public static List<String> splitStringList(String text, String regex)
    {
        String[] split = StringUtils.split(text, regex);
        if (split == null)
        {
            return Lists.newArrayList();
        }
        return Arrays.stream(split).collect(Collectors.toList());
    }

    /**
     * 分隔长整列表
     *
     * @param text
     * @param regex
     * @return
     */
    public static List<Long> splitLongList(String text, String regex)
    {
        String[] split = StringUtils.split(text, regex);
        if (split == null)
        {
            return Lists.newArrayList();
        }
        return Arrays.stream(split).filter(StringUtils::isNumeric).map(Long::valueOf).collect(Collectors.toList());
    }

    /**
     * 分隔长整列表
     *
     * @param text
     * @return
     */
    public static List<Long> splitLongList(String text)
    {
        return splitLongList(text, DEFAULT_SPLIT_REGEX);
    }

    /**
     * 分隔整数列表
     *
     * @param text
     * @param regex
     * @return
     */
    public static List<Integer> splitIntegerList(String text, String regex)
    {
        String[] split = StringUtils.split(text, regex);
        if (split == null)
        {
            return Lists.newArrayList();
        }
        return Arrays.stream(split).filter(StringUtils::isNumeric).map(Integer::valueOf).collect(Collectors.toList());
    }

    /**
     * 分隔整数列表
     *
     * @param text
     * @return
     */
    public static List<Integer> splitIntegerList(String text)
    {
        return splitIntegerList(text, DEFAULT_SPLIT_REGEX);
    }

}
